package com.amazon.model.fulfillmentInbound;

import java.io.IOException;

import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;

/**
 * 用于打印标签的页面类型。提交您的市场不支持的PageType值将返回错误。
 * @author guoxin
 *
 */
@JsonAdapter(LabelPageType.Adapter.class)
public enum LabelPageType {

	PackageLabel_Letter_2("PackageLabel_Letter_2"), //每个美国信函标签纸两个标签。这是在美国使用联合包裹服务（UPS）作为承运人的亚马逊合作货件的唯一有效值。在加拿大和美国受支持
	PackageLabel_Letter_4("PackageLabel_Letter_4"),//每个美国字母标签纸四个标签。这是美国以外的非Amazon伙伴货件的唯一有效值。在加拿大和美国受支持
	PackageLabel_Letter_6("PackageLabel_Letter_6"), //每个美国字母标签纸六个标签。这是美国以外的非Amazon伙伴货件的唯一有效值。在加拿大和美国受支持
	PackageLabel_Letter_6_CarrierLeft("PackageLabel_Letter_6_CarrierLeft"), //包装标签字母6左载架
	PackageLabel_A4_2("PackageLabel_A4_2"),//每张A4标签纸两个标签。
	PackageLabel_A4_4("PackageLabel_A4_4"), //每张A4标签纸四个标签。
	PackageLabel_Plain_Paper("PackageLabel_Plain_Paper"),//每张美国信纸纸一个标签。仅适用于非Amazon合作伙伴的货件。
	PackageLabel_Plain_Paper_CarrierBottom("PackageLabel_Plain_Paper_CarrierBottom"),//包装标签普通纸
	PackageLabel_Thermal("PackageLabel_Thermal"),//用于热敏打印机。通过UPS支持亚马逊合作的货运
	PackageLabel_Thermal_Unified("PackageLabel_Thermal_Unified"),//用于热敏打印机。支持使用ATS发货
	PackageLabel_Thermal_NonPCP("PackageLabel_Thermal_NonPCP"),//用于热敏打印机。支持非Amazon合作伙伴的货件
	PackageLabel_Thermal_No_Carrier_Rotation("PackageLabel_Thermal_No_Carrier_Rotation");//用于热敏打印机。通过DHL支持亚马逊合作的货件

	private final String value;

	private LabelPageType(String value) {
		this.value = value;
	}

	public String value() {
		return this.value;
	}
	
	public String getValue() {
		return value;
	}
	
	public static LabelPageType fromValue(String text) {
		for (LabelPageType b : LabelPageType.values()) {
			if (String.valueOf(b.value).equals(text)) {
				return b;
			}
		}
		return null;
	}
	
	public static class Adapter extends TypeAdapter<LabelPageType> {
		@Override
		public void write(final JsonWriter jsonWriter, final LabelPageType enumeration) throws IOException {
			jsonWriter.value(enumeration.getValue());
		}

		@Override
		public LabelPageType read(final JsonReader jsonReader) throws IOException {
			String value = jsonReader.nextString();
			return LabelPageType.fromValue(String.valueOf(value));
		}
	}
}
